package cn.kgc.service;

import cn.kgc.entity.Messageinfo;

import java.util.List;

/**
 * @author wangyue
 * @version 1.0
 */
@SuppressWarnings("all")
public interface SenderMessageInfoService {
    /**
     * 根据消息的id获得消息
     */
    Messageinfo getTransmessage(String id);


    /**
     * 发送消息前保存消息
     * @param exchange     交换机
     * @param routingKey   routingKey
     * @param body         消息体
     * @param serviceName  服务名称
     * @param delayTime    延迟时间
     */
    Messageinfo  messageSendReady(
            String exchange, String routingKey,
            String body,String serviceName,long delayTime
    );

    /**
     * 消息发送成功,消息进入交换机,删除消息
     * @param id 消息ID
     */
    void messageSendSuccess(String id);

    /**
     * 消息没有进入到队列中,将消息重新持久化
     * @param exchange     交换机
     * @param routingKey   路由key
     * @param body         消息主体
     * @param sequence     消息被发送的次数
     * @param serviceName 服务名称
     * @param delayTime   延迟时间
     */
    Messageinfo  messageSendReturn(
            String exchange,String routingKey,
            String body,int sequence,String serviceName,long delayTime
    );

    /**
     * 定时任务查询应发未发(发送过了但是发送失败)送的消息
     */
    List<Messageinfo> listReadyMessage();

    /**
     * 增加消息发送的次数
     * @param id 消息id
     */
    void messageResend(String id);

    /**
     * 消息重发多次,消息死亡
     * @param id 消息id
     */
    void messageDead(String id);
}
